package com.solidumgame.locroninja.juego.ingredientes
{
	import com.solidumgame.locroninja.juego.Partida;
	
	import flash.geom.Matrix3D;
	import flash.geom.Vector3D;
	
	import libs.away3d.events.MouseEvent3D;
	import libs.jiglib.geometry.JBox;

	public class IngredienteNoCortado extends Ingrediente
	{
		
		protected var ingredienteCortadoArriba:Class;
		protected var ingredienteCortadoAbajo:Class;
		protected var divisionEnY:Number;
		public function IngredienteNoCortado(ingredienteCortadoArriba:Class,ingredienteCortadoAbajo:Class, divisionEnY:Number)
		{
			super();
			
			this.ingredienteCortadoAbajo = ingredienteCortadoAbajo;
			this.ingredienteCortadoArriba = ingredienteCortadoArriba;
			this.divisionEnY = divisionEnY;
			//Listeners
			_modelo3D.addOnMouseOver(cortarIngrediente);
		}

		
		
		override public function  agregarIngrediente(posicion:Vector3D,velocidad:Vector3D,angulo:Vector3D, orientacion:Matrix3D):void{
			
			Partida.fisica.addBody(_modeloFisica);
			Partida.escenario.scene.addChild(_modelo3D);
			
			_id = _modeloFisica.id;
			
			_modeloFisica.moveTo(posicion);
			_modeloFisica.setVelocity(velocidad);
			_modeloFisica.setAngVel(angulo);
			
			Partida.ingredientes.push(this);
		}
		
		override public function removerIngrediente(indice:int):void{
			
			//Remover listeners
			_modelo3D.removeOnMouseOver(cortarIngrediente);
			
			//Sacamos el ingrediente del array
			if(indice < 0){
				for(var j:int = 0; j < Partida.ingredientes.length; j ++){
					if( Partida.ingredientes[j] == this){
						Partida.ingredientes.splice(j,1);
						j--;
						if(j<0)
							j = 0;
					}
				}
			}else{
				Partida.ingredientes.splice(indice,1);
			}
			
			//Le saca los objetos 3D que tiene adentro el contenedor
			for(var i:int = 0 ; i < _modelo3D.children.length ; i++){
				_modelo3D.removeChild(_modelo3D.children[i]);
			}
			
			//Removemos caja de fisica y contenedor
			Partida.fisica.removeBody(_modeloFisica);
			Partida.escenario.scene.removeChild(_modelo3D);
			
			_modeloFisica = null;
			_modelo3D = null;
		}
		
		protected function cortarIngrediente(e:MouseEvent3D):void{
			
			
			new SonidoCorte().play();
			
			//Generamos mitad superior
			var chocloMitadArriba:IngredienteCortado = new ingredienteCortadoArriba();
			
			var posicion:Vector3D = _modeloFisica.currentState.position;
			posicion.y -= divisionEnY;
			var orientacion:Matrix3D = modeloFisica.currentState.orientation; 
			var velocidad:Vector3D = new Vector3D(Math.random()*8,-28-Math.random()*-2,0);
			var angulo:Vector3D = new Vector3D(Math.random(),Math.random(),Math.random());//_modeloFisica.currentState.rotVelocity;
			
			
			
			
			chocloMitadArriba.agregarIngrediente(posicion,velocidad, angulo, orientacion);
			
			//Generamos mitad inferior
			var chocloMitadAbajo:IngredienteCortado = new ingredienteCortadoAbajo();
			
			posicion = new Vector3D(_modeloFisica.currentState.position.x,_modeloFisica.currentState.position.y+divisionEnY,_modeloFisica.currentState.position.z);
			velocidad = new Vector3D(Math.random()*-8,-28-Math.random()*-2,0);
			angulo = new Vector3D(Math.random(),Math.random(),Math.random());
			
			chocloMitadAbajo.agregarIngrediente(posicion,velocidad, angulo, orientacion);
			
			//Remueve ingrediente
			removerIngrediente(-1);
			
		}		
		
	}
}